{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 引言\n",
    "前面我们讲完交通标志🚥的识别，现在我们开始尝试来实现交通信号灯的识别\n",
    "接下来我们将按照自己的思路来实现并完善整个Project\n",
    "# Step 1\n",
    "首先我们第一步是导入数据，并在RGB及HSV色彩空间可视化部分数据。这里的数据，我们采用[MIT自动驾驶课程](https://selfdrivingcars.mit.edu/)的图片，\n",
    "总共三类：红绿黄，1187张图片，其中，723张红色交通灯图片，429张绿色交通灯图片，35张黄色交通灯图片。\n",
    "# 导入库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import some libs\n",
    "import cv2\n",
    "import os\n",
    "import glob\n",
    "import random\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.image as mpimg\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "723\n",
      "35\n",
      "429\n"
     ]
    }
   ],
   "source": [
    "# Image data directories\n",
    "IMAGE_DIR_TRAINING = \"traffic_light_images/training/\"\n",
    "IMAGE_DIR_TEST = \"traffic_light_images/test/\"\n",
    "\n",
    "#load data\n",
    "def load_dataset(image_dir):\n",
    "    '''\n",
    "    This function loads in images and their labels and places them in a list\n",
    "    image_dir:directions where images stored\n",
    "    '''\n",
    "    im_list =[]\n",
    "    image_types= ['red','yellow','green']\n",
    "    \n",
    "    #Iterate through each color folder\n",
    "    for im_type in image_types:\n",
    "        file_lists = glob.glob(os.path.join(image_dir,im_type,'*'))\n",
    "        print(len(file_lists))\n",
    "        for file in file_lists:\n",
    "            im = mpimg.imread(file)\n",
    "            \n",
    "            if not im is None:\n",
    "                im_list.append((im,im_type))\n",
    "    return im_list\n",
    "IMAGE_LIST = load_dataset(IMAGE_DIR_TRAINING)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Visualize the data \n",
    "这里可视化主要实现：\n",
    ">* 显示图像\n",
    ">* 打印出图片的大小\n",
    ">* 打印出图片对应的标签\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x144 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_,ax = plt.subplots(1,3,figsize=(5,2))\n",
    "#red\n",
    "img_red = IMAGE_LIST[0][0]\n",
    "ax[0].imshow(img_red)\n",
    "ax[0].annotate(IMAGE_LIST[0][1],xy=(2,5),color='blue',fontsize='10')\n",
    "ax[0].axis('off')\n",
    "ax[0].set_title(img_red.shape,fontsize=10)\n",
    "#yellow\n",
    "img_yellow = IMAGE_LIST[730][0]\n",
    "ax[1].imshow(img_yellow)\n",
    "ax[1].annotate(IMAGE_LIST[730][1],xy=(2,5),color='blue',fontsize='10')\n",
    "ax[1].axis('off')\n",
    "ax[1].set_title(img_yellow.shape,fontsize=10)\n",
    "#green\n",
    "img_green = IMAGE_LIST[800][0]\n",
    "ax[2].imshow(img_green)\n",
    "ax[2].annotate(IMAGE_LIST[800][1],xy=(2,5),color='blue',fontsize='10')\n",
    "ax[2].axis('off')\n",
    "ax[2].set_title(img_green.shape,fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PreProcess Data\n",
    "在导入了上述数据后，接下来我们需要标准化输入及输出\n",
    "## Input\n",
    "从上图，我们可以看出，每张图片的大小并不一样，我们需要标准化输入\n",
    "将每张图图片的大小resize成相同的大小，\n",
    "因为对于分类任务来说，我们需要\n",
    "在每张图片上应用相同的算法，因此标准化图像尤其重要\n",
    "## Output\n",
    "这里我们的标签数据是类别数据：'red','yellow','green'，因此我们可以利用[one_hot](https://machinelearningmastery.com/how-to-one-hot-encode-sequence-data-in-python/)方法将类别数据转换成数值数据\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 标准化输入图像，这里我们resize图片大小为32x32x3,这里我们也可以对图像进行裁剪、平移、旋转\n",
    "def standardize(image_list):\n",
    "    '''\n",
    "    This function takes a rgb image as input and return a standardized version\n",
    "    image_list: image and label\n",
    "    '''\n",
    "    standard_list = []\n",
    "    #Iterate through all the image-label pairs\n",
    "    for item in image_list:\n",
    "        image = item[0]\n",
    "        label = item[1]\n",
    "        # Standardize the input\n",
    "        standardized_im = standardize_input(image)\n",
    "        # Standardize the output(one hot)\n",
    "        one_hot_label = one_hot_encode(label)\n",
    "        # Append the image , and it's one hot encoded label to the full ,processed list of image data\n",
    "        standard_list.append((standardized_im,one_hot_label))\n",
    "    return standard_list\n",
    "\n",
    "def standardize_input(image):\n",
    "    #Resize all images to be 32x32x3\n",
    "    standard_im = cv2.resize(image,(32,32))\n",
    "    return standard_im\n",
    "\n",
    "def one_hot_encode(label):\n",
    "    #return the correct encoded label. \n",
    "    '''\n",
    "    # one_hot_encode(\"red\") should return: [1, 0, 0]\n",
    "    # one_hot_encode(\"yellow\") should return: [0, 1, 0]\n",
    "    # one_hot_encode(\"green\") should return: [0, 0, 1]\n",
    "    '''\n",
    "    if label=='red':\n",
    "        return [1,0,0]\n",
    "    elif label=='yellow':\n",
    "        return [0,1,0]\n",
    "    else:\n",
    "        return [0,0,1]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test your code\n",
    "实现完了上述标准化代码后，我们需要进一步确定我们的代码是正确的，因此接下来我们可以实现一个函数来实现上述代码功能的检验\n",
    "用Python搭建自动化测试框架，我们需要组织用例以及测试执行，这里我们推荐Python的标准库——unittest。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "**<span style=\"color:green;\">Test Passed</span>**"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import unittest\n",
    "from IPython.display import Markdown,display\n",
    "\n",
    "# Helper function for printing markdown text(text in color/bold/etc)\n",
    "def printmd(string):\n",
    "    display(Markdown(string))\n",
    "# Print a test falied message,given an error\n",
    "def print_fail():\n",
    "    printmd('**<span style==\"color: red;\">Test Failed</span>**')\n",
    "def print_pass():\n",
    "    printmd('**<span style=\"color:green;\">Test Passed</span>**')\n",
    "# A class holding all tests\n",
    "class Tests(unittest.TestCase):\n",
    "    #Tests the 'one_hot_encode' function,which is passed in as an argument\n",
    "    def test_one_hot(self,one_hot_function):\n",
    "        #test that the generate onr-hot lables match the expected one-hot label\n",
    "        #for all three cases(red,yellow,green)\n",
    "        try:\n",
    "            self.assertEqual([1,0,0],one_hot_function('red'))\n",
    "            self.assertEqual([0,1,0],one_hot_function('yellow'))\n",
    "            self.assertEqual([0,0,1],one_hot_function('green'))\n",
    "        #enter exception\n",
    "        except self.failureException as e:\n",
    "            #print out an error message\n",
    "            print_fail()\n",
    "            print('Your function did not return the excepted one-hot label')\n",
    "            print('\\n'+str(e))\n",
    "            return\n",
    "        print_pass()\n",
    "    #Test if ay misclassified images are red but mistakenly classifed as green\n",
    "    def test_red_aa_green(self,misclassified_images):\n",
    "        #Loop through each misclassified image and the labels\n",
    "        for im,predicted_label,true_label in misclassified_images:\n",
    "            #check if the iamge is one of a red light\n",
    "            if(true_label==[1,0,0]):\n",
    "                try:\n",
    "                    self.assertNotEqual(true_label,[0,1,0])\n",
    "                except self.failureException as e:\n",
    "                    print_fail()\n",
    "                    print('Warning:A red light is classified as green.')\n",
    "                    print('\\n'+str(e))\n",
    "                    return\n",
    "        print_pass()\n",
    "tests = Tests()\n",
    "tests.test_one_hot(one_hot_encode)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "Standardized_Train_List = standardize(IMAGE_LIST)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Feature Extraction\n",
    "在这里我们将使用色彩空间、形状分析及特征构造\n",
    "## RGB to HSV\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Label [red, yellow, green]: [1, 0, 0]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fb49ad71f28>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Visualize\n",
    "image_num = 0\n",
    "test_im = Standardized_Train_List[image_num][0]\n",
    "test_label = Standardized_Train_List[image_num][1]\n",
    "#convert to hsv\n",
    "hsv = cv2.cvtColor(test_im, cv2.COLOR_RGB2HSV)\n",
    "# Print image label\n",
    "print('Label [red, yellow, green]: ' + str(test_label))\n",
    "h = hsv[:,:,0]\n",
    "s = hsv[:,:,1]\n",
    "v = hsv[:,:,2]\n",
    "# Plot the original image and the three channels\n",
    "_, ax = plt.subplots(1, 4, figsize=(20,10))\n",
    "ax[0].set_title('Standardized image')\n",
    "ax[0].imshow(test_im)\n",
    "ax[1].set_title('H channel')\n",
    "ax[1].imshow(h, cmap='gray')\n",
    "ax[2].set_title('S channel')\n",
    "ax[2].imshow(s, cmap='gray')\n",
    "ax[3].set_title('V channel')\n",
    "ax[3].imshow(v, cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# create feature\n",
    "'''\n",
    "HSV即色相、饱和度、明度（英语：Hue, Saturation, Value），又称HSB，其中B即英语：Brightness。\n",
    "\n",
    "色相（H）是色彩的基本属性，就是平常所说的颜色名称，如红色、黄色等。\n",
    "饱和度（S）是指色彩的纯度，越高色彩越纯，低则逐渐变灰，取0-100%的数值。\n",
    "明度（V），亮度（L），取0-100%。\n",
    "\n",
    "'''\n",
    "def create_feature(rgb_image):\n",
    "    '''\n",
    "    Basic brightness feature\n",
    "    rgb_image : a rgb_image\n",
    "    '''\n",
    "    hsv = cv2.cvtColor(rgb_image,cv2.COLOR_RGB2HSV)\n",
    "    \n",
    "    sum_brightness = np.sum(hsv[:,:,2])\n",
    "    area = 32*32\n",
    "    avg_brightness = sum_brightness / area#Find the average\n",
    "    return avg_brightness\n",
    "\n",
    "def high_saturation_pixels(rgb_image,threshold=80):\n",
    "    '''\n",
    "    Returns average red and green content from high saturation pixels\n",
    "    Usually, the traffic light contained the highest saturation pixels in the image.\n",
    "    The threshold was experimentally determined to be 80\n",
    "    '''\n",
    "    high_sat_pixels = []\n",
    "    hsv = cv2.cvtColor(rgb,cv2.COLOR_RGB2HSV)\n",
    "    for i in range(32):\n",
    "        for j in range(32):\n",
    "            if hsv[i][j][1] > threshold:\n",
    "                high_sat_pixels.append(rgb_image[i][j])\n",
    "    if not high_sat_pixels:\n",
    "        return highest_sat_pixel(rgb_image)\n",
    "    \n",
    "    sum_red = 0\n",
    "    sum_green = 0\n",
    "    for pixel in high_sat_pixels:\n",
    "        sum_red+=pixel[0]\n",
    "        sum_green+=pixel[1]\n",
    "        \n",
    "    # use sum() instead of manually adding them up\n",
    "    avg_red = sum_red / len(high_sat_pixels)\n",
    "    avg_green = sum_green / len(high_sat_pixels)*0.8\n",
    "    return avg_red,avg_green\n",
    "def highest_sat_pixel(rgb_image):\n",
    "    '''\n",
    "    Finds the highest saturation pixels, and checks if it has a higher green\n",
    "    or a higher red content\n",
    "    '''\n",
    "    hsv = cv2.cvtColor(rgb_image,cv2.COLOR_RGB2HSV)\n",
    "    s = hsv[:,:,1]\n",
    "    \n",
    "    x,y = (np.unravel_index(np.argmax(s),s.shape))\n",
    "    if rgb_image[x,y,0] > rgb_image[x,y,1]*0.9:\n",
    "        return 1,0 #red has a higher content\n",
    "    return 0,1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test dataset\n",
    "接下来我们导入测试集来看看，上述方法的测试精度\n",
    "上述方法我们实现了：\n",
    "1.求平均的brightness\n",
    "2.求red及green的色彩饱和度\n",
    "有人或许会提出疑问，为啥没有进行yellow的判断，因此我们作出以下的改善\n",
    "reference [url](http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html?highlight=cv2%20inrange)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def estimate_label(rgb_image,display=False):\n",
    "    '''\n",
    "    rgb_image:Standardized RGB image\n",
    "    '''\n",
    "    return red_green_yellow(rgb_image,display)\n",
    "def findNoneZero(rgb_image):\n",
    "    rows,cols,_ = rgb_image.shape\n",
    "    counter = 0\n",
    "    for row in range(rows):\n",
    "        for col in range(cols):\n",
    "            pixels = rgb_image[row,col]\n",
    "            if sum(pixels)!=0:\n",
    "                counter = counter+1\n",
    "    return counter\n",
    "def red_green_yellow(rgb_image,display):\n",
    "    '''\n",
    "    Determines the red , green and yellow content in each image using HSV and experimentally\n",
    "    determined thresholds. Returns a Classification based on the values\n",
    "    '''\n",
    "    hsv = cv2.cvtColor(rgb_image,cv2.COLOR_RGB2HSV)\n",
    "    sum_saturation = np.sum(hsv[:,:,1])# Sum the brightness values\n",
    "    area = 32*32\n",
    "    avg_saturation = sum_saturation / area #find average\n",
    "    \n",
    "    sat_low = int(avg_saturation*1.3)#均值的1.3倍，工程经验\n",
    "    val_low = 140\n",
    "    #Green\n",
    "    lower_green = np.array([70,sat_low,val_low])\n",
    "    upper_green = np.array([100,255,255])\n",
    "    green_mask = cv2.inRange(hsv,lower_green,upper_green)\n",
    "    green_result = cv2.bitwise_and(rgb_image,rgb_image,mask = green_mask)\n",
    "    #Yellow\n",
    "    lower_yellow = np.array([10,sat_low,val_low])\n",
    "    upper_yellow = np.array([60,255,255])\n",
    "    yellow_mask = cv2.inRange(hsv,lower_yellow,upper_yellow)\n",
    "    yellow_result = cv2.bitwise_and(rgb_image,rgb_image,mask=yellow_mask)\n",
    "    \n",
    "    # Red \n",
    "    lower_red = np.array([150,sat_low,val_low])\n",
    "    upper_red = np.array([180,255,255])\n",
    "    red_mask = cv2.inRange(hsv,lower_red,upper_red)\n",
    "    red_result = cv2.bitwise_and(rgb_image,rgb_image,mask = red_mask)\n",
    "    if display==True:\n",
    "        _,ax = plt.subplots(1,5,figsize=(20,10))\n",
    "        ax[0].set_title('rgb image')\n",
    "        ax[0].imshow(rgb_image)\n",
    "        ax[1].set_title('red result')\n",
    "        ax[1].imshow(red_result)\n",
    "        ax[2].set_title('yellow result')\n",
    "        ax[2].imshow(yellow_result)\n",
    "        ax[3].set_title('green result')\n",
    "        ax[3].imshow(green_result)\n",
    "        ax[4].set_title('hsv image')\n",
    "        ax[4].imshow(hsv)\n",
    "        plt.show()\n",
    "    sum_green = findNoneZero(green_result)\n",
    "    sum_red = findNoneZero(red_result)\n",
    "    sum_yellow = findNoneZero(yellow_result)\n",
    "    if sum_red >= sum_yellow and sum_red>=sum_green:\n",
    "        return [1,0,0]#Red\n",
    "    if sum_yellow>=sum_green:\n",
    "        return [0,1,0]#yellow\n",
    "    return [0,0,1]#green"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test\n",
    "接下来我们选择三张图片来看看测试效果\n",
    "> img_red,img_yellow,img_green"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predict label : [1, 0, 0]\n",
      "True label: [1, 0, 0]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predict label : [0, 1, 0]\n",
      "True label: [0, 1, 0]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predict label : [0, 0, 1]\n",
      "True label: [0, 0, 1]\n"
     ]
    }
   ],
   "source": [
    "img_test = [(img_red,'red'),(img_yellow,'yellow'),(img_green,'green')]\n",
    "standardtest = standardize(img_test)\n",
    "\n",
    "for img in standardtest:\n",
    "    predicted_label = estimate_label(img[0],display = True)\n",
    "    print('Predict label :',predicted_label)\n",
    "    print('True label:',img[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "181\n",
      "9\n",
      "107\n"
     ]
    }
   ],
   "source": [
    "# Using the load_dataset function in helpers.py\n",
    "# Load test data\n",
    "TEST_IMAGE_LIST = load_dataset(IMAGE_DIR_TEST)\n",
    "\n",
    "# Standardize the test data\n",
    "STANDARDIZED_TEST_LIST = standardize(TEST_IMAGE_LIST)\n",
    "\n",
    "# Shuffle the standardized test data\n",
    "random.shuffle(STANDARDIZED_TEST_LIST)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Determine the Accuracy\n",
    "接下来我们来看看咱们算法在测试集上的准确率。下面我们实现的代码存储所有的被错分的图片以及它们被预测的结果及真实标签。\n",
    "这些数据被存储在MISCLASSIFIED.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy:0.9797979797979798\n",
      "Number of misclassfied images = 6 out of 297\n"
     ]
    }
   ],
   "source": [
    "# COnstructs a list of misclassfied iamges given a list of test images and their labels\n",
    "# This will throw an assertionerror if labels are not standardized(one hot encode)\n",
    "def get_misclassified_images(test_images,display=False):\n",
    "    misclassified_images_labels = []\n",
    "    #Iterate through all the test images\n",
    "    #Classify each image  and compare to the true label\n",
    "    for image in test_images:\n",
    "        # Get true data\n",
    "        im = image[0]\n",
    "        true_label = image[1]\n",
    "        assert (len(true_label)==3),'This true_label is not the excepted length (3).'\n",
    "        \n",
    "        #Get predicted label from your classifier\n",
    "        predicted_label = estimate_label(im,display=False)\n",
    "        assert(len(predicted_label)==3),'This predicted_label is not the excepted length (3).'\n",
    "        \n",
    "        #compare true and predicted labels\n",
    "        if(predicted_label!=true_label):\n",
    "            #if these labels are ot equal, the image  has been misclassified\n",
    "            misclassified_images_labels.append((im,predicted_label,true_label))\n",
    "    # return the list of misclassified [image,predicted_label,true_label] values\n",
    "    return misclassified_images_labels\n",
    "# Find all misclassified images in a given test set\n",
    "MISCLASSIFIED = get_misclassified_images(STANDARDIZED_TEST_LIST,display=False)\n",
    "#Accuracy calcuations\n",
    "total = len(STANDARDIZED_TEST_LIST)\n",
    "num_correct = total-len(MISCLASSIFIED)\n",
    "accuracy = num_correct / total\n",
    "print('Accuracy:'+str(accuracy))\n",
    "print('Number of misclassfied images = '+str(len(MISCLASSIFIED))+' out of '+str(total))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:tensorflow]",
   "language": "python",
   "name": "conda-env-tensorflow-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
